#ifndef VALUE_OBJECT_H
#define VALUE_OBJECT_H

#include "DateObject.h"
#include "NumberObject.h"

#include <object_v2/object_v2.h>

OBJECT_DECLARE (ValueObject, value_object)
#define VALUE_OBJECT(any) ((ValueObject*)(any))
/**
 * @brief Value 的具体类型调用 value_fetch_type () 取得。
 */
struct _ValueObject
{
        ObjectNode    parent_instance;
        ObjectString* text;
        DateObject*   date;
        NumberObject* number; // 数值对象，包括纯数值和范围数值
};

/**
 * @brief 根据 ValueType 从字符串载入 Value
 */
int value_object_load_as_type (ValueObject*             obj,
                               ValueType                type,
                               ObjectStringApplication* str);
/**
 * @brief 判断 ValueObject 字符串中是否包含指定的数字。
 */
bool value_object_is_contain_number (ValueObject* head, int number);

#endif